/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ipartek.formacion.gestformwww.controlador;

import com.ipartek.formacion.gestformwww.modelo.ModeloContacto;
import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *Metodo BorrarContactoAccion que lo que realiza es borrar un contacto y eliminarlo de la base de
 *datos
 * @author Jorge y Enrique
 */
public class BorrarContactoAccion implements Accion{

    public AccionRouter ejecuta(HttpServlet servlet, HttpServletRequest request, HttpServletResponse response) {
        AccionRouter router = null;
        HttpSession sesion = request.getSession();
        AccionServlet as=(AccionServlet) servlet;
        ArrayList<String> mensajes= new ArrayList<String>();
        String[] contactoId;
        int contId = 0;
        Boolean correcto = false;
        boolean ejecutar = true;
        String aleatorio = (String) sesion.getAttribute("aleatorioBorrarContacto");

        if (aleatorio != null) {
            if (request.getParameter("aleatorioBorrarContacto") != null) {
                if (request.getParameter("aleatorioBorrarContacto").equals(aleatorio)) {
                    // Si se pulsa F5 o atras el aleatorio del request será igual al de la sesión.
                    // NO debe crearse un Candidato (ya se creo anteriormente)
                    ejecutar = false;
                } else {
                    sesion.setAttribute("aleatorioBorrarContacto", request.getParameter("aleatorioBorrarContacto"));
                }
            }
        } else {
            sesion.setAttribute("aleatorioBorrarContacto", request.getParameter("aleatorioBorrarContacto"));
        }

        ModeloContacto modelocon=(ModeloContacto) servlet.getServletContext().getAttribute("ModeloContacto");
        if (sesion.getAttribute("usuario") != null) { //Si esta logeado
            contactoId = request.getParameterValues("contactoId");
            if (contactoId != null){
                for(String s: contactoId){
                    contId = Integer.parseInt(s);
                    if(contId != 0 && ejecutar){
                        try {
                            modelocon.eliminar(contId);
                            correcto = true;
                        } catch (GestorFormacionExcepcion ex) {
                            Logger.getLogger(BorrarContactoAccion.class.getName()).log(Level.SEVERE, null, ex);
                            sesion.setAttribute("excepciones", ex.getMessage());
                        }
                    }
                }
            }
            if (correcto){
                mensajes.add("mensaje-borrar-contacto");
                sesion.setAttribute("mensajes",mensajes);
            }
            
            try {
                router = as.getFactory().getAction(as.getNombreClaseRecurso("visualizar-candidato-accion"), servlet.getClass().getClassLoader()).ejecuta(servlet, request, response);
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(BorrarContactoAccion.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                Logger.getLogger(BorrarContactoAccion.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                Logger.getLogger(BorrarContactoAccion.class.getName()).log(Level.SEVERE, null, ex);
            }
        }else{
            //Si el usuario no esta logueado
            router = new AccionRouter("inicio", false);
        }
        return router;
}
}
